/**
 * Copyright (c) 2017-2022 Rushang Co.Ltd All Rights Reserved.
 */
package com.rshang.rsdp.service;

import com.rshang.rsdp.util.excel.CellKey;
import org.apache.poi.ss.usermodel.Cell;
import org.joda.time.DateTime;

import java.util.Date;
import java.util.List;

/**
 * 功能简介：excel数据处理接口<br/>
 *
 * @author zhangjun
 * @create 2017年8月29日下午4:02:10
 */
public interface IExcelService {

    /**
     * 单元格校验方法
     *
     * @param row        行号
     * @param column     列号
     * @param str        字符串
     * @param len        长度
     * @param errList    错误list对象
     * @param isRequired 是否必填 true为必填 false为非必填
     */
    public void checkCell(int row, int column, String str, int len, List<String> errList, boolean isRequired);

    /**
     * 日期单元格校验
     *
     * @param row        行号
     * @param column     列号
     * @param str        字符串
     * @param pattern    日期格式字符串
     * @param errList    错误list对象
     * @param isRequired 是否必填 true为必填 false为非必填
     */
    public void checkDateCell(int row, int column, String str, String pattern, List<String> errList, boolean isRequired);

    /**
     * 单元格必填校验方法
     *
     * @param row     行号
     * @param column  列号
     * @param str     字符串
     * @param len     长度
     * @param errList 错误list对象
     */
    public void checkCell(int row, int column, String str, int len, List<String> errList);


    /**
     * 判断cell值不为空
     *
     * @param cell cell对象
     *
     * @return boolean
     */
    public boolean isCellNotEmpty(Cell cell);

    /**
     * 设置单元格为字符串格式
     *
     * @param cell 单元格对象
     */
    public void setStringCell(Cell cell);

    /**
     * 单元格校验静态方法
     *
     * @param rowNo    行号
     * @param columnNo 列号
     * @param cellKey  单元格bean
     * @param cell     单元格对象
     * @param errList  错误list对象
     */
    public void checkCellValue(int rowNo, int columnNo, CellKey cellKey, Cell cell, List<String> errList);

    /**
     * 获取字符串单元格内容 如果为空返回空字符串
     *
     * @param cell 单元格对象
     *
     * @return String
     */

    public String getCellValue(Cell cell);

    /**
     * 获取字符串单元格内容
     *
     * @param cell         单元格对象
     * @param defaultValue 默认值
     *
     * @return String
     */
    public String getCellValue(Cell cell, String defaultValue);

    /**
     * 单元格内容转date
     *
     * @param cell 单元格对象
     *
     * @return String
     */
    public Date getDateCellValue(Cell cell);

}